import Vue from "vue";
import axios from "axios";
import App from "./App.vue";
import router from "./router";
import ElementUI from "element-ui";
import VueAxios from "vue-axios";
import store from "./store";

import "element-ui/lib/theme-chalk/index.css"; // 默认主题
// import "./assets/css/theme-green/index.css"; // 浅绿色主题
import "./assets/css/icon.css";
import "./assets/css/cg_css.css";
import "./components/utils/directives";
import "babel-polyfill";

import {BASE_HOST} from './constvars';

Vue.config.productionTip = false;

axios.defaults.baseURL = `${BASE_HOST}/api/v1`;
axios.interceptors.request.use(
    (config) => {
        if (config.method === "get") {
            config["params"] = {
                sys_id: store.state.sys_id,
                ...(config.params || null),
            };
        } else {
            config["data"] = {
                sys_id: store.state.sys_id,
                ...(config.data || null),
            };
        }
        if (store.state.token) {
            config.headers.Authorization = `Bearer ${store.state.token}`;
        }
        return config;
    },
    (error) => {
        return Promise.reject(error);
    }
);
Vue.use(VueAxios, axios);
Vue.use(ElementUI, {
    size: "small",
});

let app = null;
//使用钩子函数对路由进行权限跳转
router.beforeEach((to, from, next) => {
    document.title = `${to.meta.title} | 系统`;
    let token = "";
    if (app) {
        // console.log(app.$store.state.userinfo);
        token = app.$store.state.token;
    }
    // const role = localStorage.getItem('ms_username');
    const role = "admin";
    if (
        !token &&
        to.path !== "/login" &&
        to.path !== "/registerSuccess" &&
        to.path !== "/404"
    ) {
        next("/login");
    } else if (to.meta.permission) {
        // 如果是管理员权限则可进入，这里只是简单的模拟管理员权限而已
        role === "admin" ? next() : next("/404");
    } else {
        // 简单的判断IE10及以下不进入富文本编辑器，该组件不兼容
        if (navigator.userAgent.indexOf("MSIE") > -1 && to.path === "/editor") {
            Vue.prototype.$alert(
                "不兼容IE10及以下浏览器，请使用更高版本的浏览器查看",
                "浏览器不兼容通知",
                {
                    confirmButtonText: "确定",
                }
            );
        } else {
            next();
        }
    }
});

app = new Vue({
    router,
    store,
    render: (h) => h(App),
}).$mount("#app");
